// 创建路由对象
var express = require('express')

var router = express.Router()

var User = require('./modules/userSchema.js')

var md5 = require('blueimp-md5')
// get方法请求渲染首页
router.get('/', function (req, res) {
    res.render('index.html', {
        user:req.session.user
    })
})

// get方法请求渲染登录页
router.get('/login', function (req, res) {
    res.render('login.html')
})

// get方法请求渲染注册页
router.get('/register', function (req, res) {
    res.render('register.html')
})

// post处理注册事件
router.post('/register', function (req, res) {
    var body = req.body
    // 1.查询该账户是否已被注册
    User.findOne(
        {"$or":[{email:body.email}, {nickname:body.nickname}]},
        function (err, data) {
            if(err)
                return res.status(500).json({
                    // 在这里是因为前端设置了接收返回的数据类型为json格式
                    err_code:500,
                    message:'Server Error'
                })
            // 2.存在则显示无法注册
            else if(data)
                return res.status(200).json({
                    err_code:1,
                    message:'邮箱或昵称已存在！'
                })
            else{
                // 3.不存在则显示注册成功
                // 使用md5对数据进行加密处理(两次加密效果更好)
                req.session.user = body
                body.password = md5(md5(body.password))
                new User(body).save(function (err) {
                    if(err)
                        return res.status(500).send("server error")
                    return res.status(200).json({
                        err_code:0,
                        message:'注册成功！'
                    })
                })
            }
        }

    )




})

// post处理登录事件
router.post('/login', function (req, res) {
    User.findOne({email:req.body.email,
        password:md5(md5(req.body.password))}, function (err, data) {
        if(err) {
            return res.status(500).json({
                // 在这里是因为前端设置了接收返回的数据类型为json格式
                err_code:500,
                message:'Server Error'
            })
        }
       else if(data){
           // 设置session的值记录登录状态
           req.session.user = data

            return res.status(200).json({
                // 在这里是因为前端设置了接收返回的数据类型为json格式
                err_code:0,
                message:'登录成功'
            })
        }

        else
            return res.status(200).json({
                // 在这里是因为前端设置了接收返回的数据类型为json格式
                err_code:1,
                message:'用户名或密码错误'
            })
    })
})


router.get('/logout', function (req, res) {
    // 清除登录状态
    req.session.user = null
    // 重定向跳转到登录页
    res.redirect('/login')
})

// 把路由导出
module.exports = router
